package com.bot.nft.module.mb.service;


import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.bot.nft.module.mb.domain.MbUserInfo;
import com.bot.nft.module.mb.domain.bo.LoginQueryBo;
import com.bot.nft.module.mb.domain.bo.MbUserInfoBo;
import com.bot.nft.module.mb.domain.vo.MbUserInfoVo;

/**
 * 描述: 会员信息业务接口， 包含添加会员，注册，登录功能等核心功能。
 * <p>
 * 时间: 2023-11-23 12:01
 * 负责人: 卢梦丽
 **/
public interface IMbMemberService extends IService<MbUserInfo> {

    /**
     * 添加会员信息功能
     *
     * @param memberMbInfoBo 会员信息，包含会员昵称，会员头像，会员密码，会员手机号，会员邮箱等
     * @return Boolean 成功/true，失败/false
     */
    public Boolean addMemberMbInfo(MbUserInfoBo memberMbInfoBo);

    /**
     * 修改会员信息功能
     *
     * @param memberMbInfoBo 会员信息，包含会员昵称，会员头像，会员密码，会员手机号，会员邮箱等
     * @return Boolean 成功/true，失败/false
     */
    public Boolean updateMemberMbInfo(MbUserInfoBo memberMbInfoBo);

    /**
     * 查看会员信息功能
     *
     * @param id 会员信息标识
     * @return 会员信息，包含会员昵称，会员头像，会员密码，会员手机号，会员邮箱等
     */
    public MbUserInfoVo getMemberMbInfo(String id);


    /**
     * 删除会员信息功能
     *
     * @param id 会员信息标识
     * @return Boolean 成功/true，失败/false
     */
    public Boolean delMemberMbInfo(String id);

    /**
     * 分页查询会员信息功能
     *
     * @param keyword  会员关键字
     * @param pageNo   当前页数
     * @param pageSize 每页显示条数
     * @return 会员信息*
     */
    public Page<MbUserInfoVo> queryMemberByPage(String keyword, Integer userStatus, Integer pageNo, Integer pageSize);

    /**
     * 启用会员功能
     *
     * @param id 会员信息标识
     * @return Boolean 成功/true，失败/false
     */
    public Boolean startMemberMbInfo(String id);

    /**
     * 禁用会员功能
     *
     * @param id 会员信息标识
     * @return Boolean 成功/true，失败/false
     */
    public Boolean disMemberMbInfo(String id);

    /**
     * 注册账号功能
     *
     * @return Boolean 成功/true，失败/false
     */
    public Boolean regAccountMbInfo(MbUserInfoBo memberMbInfoBo);

    /**
     * 查看会员信息
     *
     * @param phone 手机号
     * @return 会员信息，包含会员昵称，会员头像，会员密码，会员手机号，会员邮箱等
     */
    public MbUserInfoVo getMbInfoUniApp(String phone);

    /**
     * 设置登录密码
     *
     * @param phone 手机号
     * @return Boolean 成功/true，失败/false
     */
    public Boolean addPwdUniApp(String phone, String password);

    /**
     * 修改昵称
     *
     * @param phone    手机号
     * @param nickName 昵称
     * @return 成功/失败
     */
    public Boolean updateNick(String phone, String nickName);


    /**
     * 修改头像
     *
     * @param id  会员标识
     * @param avatar     本地路径头像
     * @param uuidAvatar minio头像路径
     * @return 成功/失败
     */
    public Boolean updateAvatar(String id, String avatar, String uuidAvatar);

    /**
     * 手机号验证
     *
     * @param phone 手机号
     * @return 是否成功
     */
    public Boolean sendcode(String phone);

    /**
     * APP端会员登录
     * @param loginQueryBo 登录信息
     * @return 令牌
     */
    public String mbLogin(LoginQueryBo loginQueryBo);

    /**
     * 用户名数量
     * @param userName 用户名
     * @return 包含用户名数量
     */
    public Integer userNameNum(String userName);

    /**
     * 手机号数量
     *
     * @param phone 手机号
     * @return 手机号数量
     */
    public Integer phoneNum(String phone);

}
